﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using CondominioWeb.Persistencia.NHibernate;
using CondominioWeb.Dominio;

namespace CondominioWeb.Pruebas
{
    [TestFixture]
    public class TestMantenimientoDAO
    {
        private MantenimientoDAO mantenimientoDao=new MantenimientoDAO();
        [Test]
        public void TestCrear()
        {
            Vivienda Vivienda = new Vivienda();
            Vivienda.Codigo_Vivienda = 1;
            Situacion_Mantenimiento Situacion = new Situacion_Mantenimiento();
            Situacion.Codigo_Situacion_Mantenimiento = 1;

            Mantenimiento MantenimientoNuevo = new Mantenimiento();
            MantenimientoNuevo.Codigo_Mantenimiento = 1;
            MantenimientoNuevo.oCodigo_Vivienda = Vivienda;
            MantenimientoNuevo.Anio = 2011;
            MantenimientoNuevo.Mes = 05;
            MantenimientoNuevo.Importe = 800;
            MantenimientoNuevo.Fecha_Emision = Convert.ToDateTime("10/05/2011");
            MantenimientoNuevo.Fecha_Pago = Convert.ToDateTime("10/06/2011");
            MantenimientoNuevo.Observaciones = "Sin OBS";
            MantenimientoNuevo.oCodigo_Situacion_Mantenimiento = Situacion;
            MantenimientoNuevo.Estado = "Activo";

            // 2. Llamada al método del DAO a probar
            Mantenimiento MantenimientoCreado = mantenimientoDao.Crear(MantenimientoNuevo);
            // 4. Implementar las validaciones
            Assert.NotNull(MantenimientoCreado);
            Assert.AreEqual(MantenimientoNuevo.Codigo_Mantenimiento, MantenimientoCreado.Codigo_Mantenimiento);

        }

        [Test]
        public void TestModificar()
        {
            Vivienda Vivienda = new Vivienda();
            Vivienda.Codigo_Vivienda = 1;
            Situacion_Mantenimiento Situacion = new Situacion_Mantenimiento();
            Situacion.Codigo_Situacion_Mantenimiento = 1;

            Mantenimiento MantenimientoNuevo = new Mantenimiento();
            MantenimientoNuevo.Codigo_Mantenimiento = 1;
            MantenimientoNuevo.oCodigo_Vivienda = Vivienda;
            MantenimientoNuevo.Anio = 2011;
            MantenimientoNuevo.Mes = 05;
            MantenimientoNuevo.Importe = 8000;
            MantenimientoNuevo.Fecha_Emision = Convert.ToDateTime("10/05/2011");
            MantenimientoNuevo.Fecha_Pago = Convert.ToDateTime("10/06/2011");
            MantenimientoNuevo.Observaciones = "Sin OBS";
            MantenimientoNuevo.oCodigo_Situacion_Mantenimiento = Situacion;
            MantenimientoNuevo.Estado = "Activo";

            // 2. Llamada al método del DAO a probar
            Mantenimiento MantenimientoCreado = mantenimientoDao.Modificar(MantenimientoNuevo);
            // 4. Implementar las validaciones
            Assert.NotNull(MantenimientoCreado);
            Assert.AreEqual(MantenimientoNuevo.Codigo_Mantenimiento, MantenimientoCreado.Codigo_Mantenimiento);

        }

        
        [Test]
        public void TestObtener()
        {
            int _cod_Mantenimiento;
            // 1. Instanciando el objeto TO
            // 2. Llamada al método del DAO a probar
            _cod_Mantenimiento = 1;
            Mantenimiento MantenimientoConsulta = mantenimientoDao.Obtener(_cod_Mantenimiento);

            // 4. Implementar las validaciones
            Assert.NotNull(MantenimientoConsulta);
            Assert.AreEqual(MantenimientoConsulta.Codigo_Mantenimiento, _cod_Mantenimiento);
            Assert.IsNotNull(MantenimientoConsulta.Codigo_Mantenimiento);
        }
        [Test]
        public void TestEliminar()
        {
            // 1. Instanciando el objeto TO
            Mantenimiento oMantenimiento = new Mantenimiento();
            oMantenimiento.Codigo_Mantenimiento = 1;
            // 2. Llamada al método del DAO a probar
            Assert.Catch<Exception>(delegate
            {
                mantenimientoDao.Eliminar(oMantenimiento);
            });
            Assert.DoesNotThrow(delegate
            {
                mantenimientoDao.Eliminar(oMantenimiento);
            });

            // 3. Implementar las validaciones
            Assert.NotNull(oMantenimiento);
            Assert.NotNull(oMantenimiento.Codigo_Mantenimiento);


        }

    }
}